Copyright: Copyright 1996, Catalyst Development Corp.


Contents
Catalyst SocketTools 1.0c Installation and Release Notes
Copyright 1995-1996 Catalyst Development Corp. All rights reserved.

 Introduction to SocketTools

 Installation Notes

 Release Notes

 Redistribution Notes

 Technical Support


Introduction to SocketTools
Catalyst SocketTools 1.0c Installation and Release Notes
Copyright 1995-1996 Catalyst Development Corp. All rights reserved.

 Introduction to SocketTools

 Overview

 Minimum Requirements

 Copyright

 License Agreement

 Installation Notes

 Release Notes

 Redistribution Notes

 Technical Support


Overview
Introduction to SocketTools

Catalyst SocketTools is a comprehensive collection of networking controls which you can use to integrate Internet protocols into your application. All of the controls in the SocketTools package share a common design, which includes their properties, methods and events. Once you've learned how to use one of the networking controls, you'll find it easy to take advantage of the others. In addition, all of the controls, regardless if they are Visual Basic controls (VBXs) or OLE controls (OCXs), share the same common code base. This means that they can be used interchangeably, and you can expect the same behavior on both 16-bit and 32-bit platforms.

There are nine controls in the SocketTools package which correspond to an application protocol, as well as a general purpose TCP/IP control:

Control	Protocol	Description
	DNS	Domain Name Service, used to resolve computer host names into Internet addresses
	FTP	File Transfer Protocol, used to transfer files between a remote host and the local system
	HTTP/HTML	Hypertext Transfer Protocol (Web Browser), used to retrieve and display HTML documents
	ICMP	Internet Control Message Protocol (Ping), used to verify that a given host is available
	NNTP	Network News Transfer Protocol, used to retrieve network news articles
	POP3	Post Office Protocol, Version 3, used to retrieve mail messages stored on a mail server
	RCMD	Remote Command Execution, used to execute commands on a remote system
	SMTP	Simple Mail Transfer Protocol, used to send mail to another user over the network
	TELNET	Network Virtual Terminal, used to login to a remote system
	TCP/UDP	Windows Sockets (SocketWrench), used to write server applications or support other client protocols using a low-level interface
In addition to these controls, there are three support controls which compliment the network controls:

Control	Name	Description
	Viewer	Displays graphic images stored in one of the common formats found on the Internet
	Dialer	Uses the Remote Access Services (RAS) API to establish dial-up connections with a service provider
	Terminal	An ANSI terminal emulation control designed to provide basic emulation for the TELNET control
Together, these controls allow you to quickly build a robust, high quality network application in a short amount of time. More than just thin shells over the protocols, each control is designed to provide the maximum amount of flexibility, while minimizing the learning curve to get your program up and running.


Miniumum Requirements
SocketTools Minimum Requirements

Development Platforms

Development with the 16-bit SocketTools controls requires that the system have the following minimum configuration:

•  Intel 386 or compatible processor (486 or higher recommended)
•  4 megabytes physical memory (8 megabytes recommended)
•  Microsoft Windows 3.1 or later
•  Windows Sockets 1.1 compatible networking software

Development with the 32-bit SocketTools controls requires that the system have the following minimum configuration:

•  Intel 486 or compatible processor (Pentium recommended)
•  8 megabytes physical memory (16 megabytes recommended)
•  Microsoft Windows 95 or Windows NT 3.51 or later
•  Windows Sockets 1.1 compatible networking software

Visual Basic Custom Controls

To use the SocketTools Visual Basic controls (VBXs), the development tool must fully support the Visual Basic 2.0 control specification. Microsoft Visual C++ 1.5 and Delphi 1.0 do not support controls built to this specification. The following development environments have been tested with the SocketTools VBX controls:

Microsoft Visual Basic 3.0
Microsoft Visual Basic 4.0

ActiveX Controls

To use the SocketTools ActiveX controls (OCXs), the development tool must provide complete container support for the ActiveX control specification. The following development environments have been tested with the SocketTools OCX controls:

Microsoft Visual C++ 4.0
Microsoft Visual Basic 4.0
Borland Delphi 2.0
Powersoft Optima++ 1.0
Powersoft PowerBuilder 5.0

Windows Sockets Library

The SocketTools controls require networking software that supports the Windows Sockets 1.1 specification or later. Using a library that is not fully compliant may result in unexpected behavior by the controls.


Copyright
Copyright © 1995-1996 Catalyst Development Corporation. All rights reserved.

SocketWrench and SocketTools are trademarks of Catalyst Development Corporation. Microsoft, Windows, Windows NT and Visual Basic are trademarks or registered trademarks of Microsoft Corporation.

Information in this document is subject to change without notice. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without the express written permission of Catalyst Development Corporation.

The software described in this document is furnished under a license agreement. The software may be used only in accordance with the terms of the agreement. It is against the law to copy the software except as specifically allowed in the license agreement. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or information storage and retrieval systems, for any purpose other than the purchaser's personal use, without the express written permission of Catalyst Development Corporation.


License Agreement
SocketTools License Agreement

GRANT OF LICENSE.  CATALYST (Catalyst Development Corporation) grants to you, the end user, the right to use one copy of the Catalyst SocketTools developer toolkit. (Known as the "SOFTWARE".) The SOFTWARE may be on a single workstation or computer. You may not network the SOFTWARE or otherwise use it on more than one computer or workstation at the same time. Contact CATALYST for more information regarding our multi-developer site licenses.

DISTRIBUTION.  The purchaser does retain the right to sell or distribute an unlimited number of "end-user programs that contain or otherwise access CATALYST component routines (including DLLs, VBXs, and OCXs), so long as the primary purpose of the included routines is to augment the software being sold or distributed. The purchaser may not distribute programs that utilize CATALYST routines if those programs are part of a programming toolkit or other application which will be redistributed or resold by purchaser's customers. The SOFTWARE is free of royalty and/or subsequent licensing fees in accordance with the above stated conditions.

COPYRIGHT.  The SOFTWARE is owned by CATALYST and is protected by copyright laws and international treaty provisions. Therefore you must treat the SOFTWARE like any other copyrighted material (e.g. a book or musical recording) EXCEPT that you may either (a) make one copy of the SOFTWARE solely for backup or archival purposes or (b) transfer the SOFTWARE to a single hard disk provided you keep the original solely for backup or archival purposes.

OTHER RESTRICTIONS.  You may not RENT or LEASE the software, but you may transfer the SOFTWARE and accompanying written materials on a permanent basis provided that you retain no copies and the recipient agrees to the terms of this Agreement. You may not reverse engineer, decompile or disassemble the SOFTWARE.

LIMITED WARRANTY and CUSTOMER REMEDIES.  If within 90 days of your purchase of this software product,  you become dissatisfied with the SOFTWARE for any reason, contact us and you will be given a return material authorization (RMA) number and you may return the software to CATALYST (or your dealer, if you did not purchase it directly from CATALYST) for a refund of your purchase price, CATALYST will not accept returns of opened software without an RMA number.

NO OTHER WARRANTIES.  CATALYST disclaims all other warranties, either express or implied, including but not limited to implied warranty of merchantability and fitness for a particular purpose, with respect to the SOFTWARE, the accompanying written materials, and any accompanying hardware.

NO LIABILITY FOR CONSEQUENTIAL DAMAGES.  In no event shall CATALYST or its suppliers be liable for any damages whatsoever (including, with limitation, damages for loss of business profits, business interruption, or other pecuniary loss) arising out of the use or inability of this CATALYST product, even if CATALYST has been advised of such damages.

Apart form the foregoing limited warranty, the software programs are provided "AS-IS", without warranty of any kind, either expressed or implied. The entire risk as to the performance of the programs is with the purchaser. CATALYST does not warrant that the operation of the programs will be uninterrupted or error-free. CATALYST assumes no responsibility or liability of any kind for errors in the programs or documentation, of/for the consequences of any such errors. This agreement is governed by the laws of the state of California.


Installation Notes
Catalyst SocketTools 1.0c Installation and Release Notes
Copyright 1995-1996 Catalyst Development Corp. All rights reserved.

 Introduction to SocketTools

 Installation Notes

 Minimum Requirements

 Upgrading SocketTools

 Windows 3.1 Installation

 Windows 95 Installation

 Windows NT Installation

 Package Files

 Release Notes

 Redistribution Notes

 Technical Support


Upgrading SocketTools

To update an existing package, you may either completely re-install SocketTools using the provided setup utility, or you may update specific controls by copying them over the existing file in the windows system directory.

Once you have replaced the controls with the 1.0c update, you must rebuild all of the projects that used versions of  the controls prior to 1.0b. In Visual Basic, you should load the project and select the form with the control(s). If an error message is displayed, ignore it and continue.

Once the form is loaded, remove the control from the form and then add it back. This will not affect any code that you have written in the control's events, but it will reset the control properties back to their default values. If you've modified the defaults in the property box, you'll need to make those changes again. At this point, you can rebuild the executable.


Windows 3.1 Installation
Installing SocketTools on Windows 3.1

To install SocketTools on Windows 3.1 or Windows for Workgroups 3.11, run the installation utility that is included with the package. If the package was downloaded electronically, it will be necessary to extract the files from an archive. To install the software, select File|Run from the Program Manager menu. A dialog box will prompt you for the name of the program to execute. If you are installing from a diskette, enter a:\setup. Otherwise, specify the complete path where the setup utility is located.

When the installation begins, you will be prompted to enter the name of a directory where documents and sample programs can be installed. If the directory does not exist, you can choose to have the setup utility create it for you.

The SocketTools controls and help file will be copied to the \WINDOWS\SYSTEM directory along with the other Visual Basic controls. After all of the files have been installed, you will be prompted if you wish to create a program group for the help and documentation files.

It is required that you have a a Windows Sockets 1.1 compatible library installed on your system. For those systems running Windows for Workgroups, a free 32-bit stack can be downloaded from Microsoft's anonymous FTP server:

Hostname:	ftp.microsoft.com
Username:	anonymous
Password:	[your email address]
File:	/peropsys/windows/public/tcpip/wfwt32.exe
This self-extracting executable contains the drivers necessary to add the TCP/IP protocol to an existing network configuration.


Windows 95 Installation
Installing SocketTools on Windows 95

To install SocketTools on Windows 95, run the installation utility that is included with the package. If the package was downloaded electronically, it will be necessary to extract the files from an archive. To install the software, click the Start button and then select Run. A dialog box will prompt you for the name of the program to execute. If you are installing from a diskette, enter a:\setup. Otherwise, specify the complete path where the setup utility is located.

When the installation begins, you will be prompted to enter the name of a directory where documents and sample programs can be installed. If the directory does not exist, you can choose to have the setup utility create it for you.

The SocketTools controls and help file will be copied to the \WINDOWS\SYSTEM directory along with the other Visual Basic controls. After all of the files have been installed, you will be prompted if you wish to create a program group for the help and documentation files.


Windows NT Installation
Installing SocketWrench on Windows NT

To install SocketTools on Windows NT 3.51, run the installation utility that is included with the package. If the package was downloaded electronically, it will be necessary to extract the files from an archive. To install the software, select File|Run from the Program Manager menu. A dialog box will prompt you for the name of the program to execute. If you are installing from a diskette, enter a:\setup. Otherwise, specify the complete path where the setup utility is located.

When the installation begins, you will be prompted to enter the name of a directory where documents and sample programs can be installed. If the directory does not exist, you can choose to have the setup utility create it for you.

The SocketTools controls and help file will be copied to the \WINDOWS\SYSTEM directory along with the other Visual Basic controls. The 32-bit OCX and DLL files will be installed in the SYSTEM32 directory.  After all of the files have been installed, you will be prompted if you wish to create a program group for the help and documentation files.


Package Files
SocketTools Files

The Catalyst SocketTools 1.0c release includes the following files:

Setup Files

setup.exe, setup32.exe, ctlreg.exe, setup.inf, unsetup.ico

Help Files

readme.hlp - This help file (also includes release notes)
cstsamps.hlp - Description of each SocketTools sample
cstools.hlp - Reference information on control's properties, events and methods
cswsock.hlp - Help file distributed with SocketWrench
tcpintro.doc - Microsoft Word document titled "Introduction to TCP/IP Programming"

Controls (VBXs, OCXs)

csdnsctl.vbx, csdns16.ocx, csdns32.ocx - Domain Name Services
csftpctl.vbx, csftp16.ocx, csftp32.ocx - File Transfer Protocol
csimgctl.vbx, csimg16.ocx, csimg32.ocx - Image Viewer
csmtpctl.vbx, csmtp16.ocx, csmtp32.ocx - Simple Mail Transfer Protocol
csnvtctl.vbx, csnvt16.ocx, csnvt32.ocx - Terminal Emulator
csnwsctl.vbx, csnws16.ocx, csnws32.ocx - Network News Transfer Protocol
csping.vbx, csping16.ocx, csping32.ocx - Internet Control Message Protocol
cspopctl.vbx, cspop16.ocx, cspop32.ocx - Post Office Protocol
csrasctl.vbx, csras16.ocx, csras32.ocx - Remote Access Services
csrexctl.vbx, csrex16.ocx, csrex32.ocx - Remote Command Execution
cstntctl.vbx, cstnt16.ocx, cstnt32.ocx - Telnet Protocol
cswebctl.vbx, csweb16.ocx, csweb32.ocx - Web Browser
cswskctl.vbx, cswsk16.ocx, cswsk32.ocx - Windows Sockets (SocketWrench)

Libraries (DLLs)

csimg16.dll, csimg32.dll - Image management and rendering libraries that provide support for the Image control and Web Browser control
uucode16.dll, uucode32.dll - Uuencode, uudecode and mime encode/decode support library for handling mail attachments
csicmp32.dll - ICMP library used by 16-bit Ping control under Windows 95 and Windows NT
cards32.dll - 32-bit version of cards.dll (standard with Windows) that is required by the 32-bit version of the Fantan sample

Microsoft Redistributable Components

mfc250.dll, oc25.dll - required by 16-bit OCX components
mfc40.dll, msvcrt40.dll - required by 32-bit OCX components

SocketTools Visual Basic Samples

Fantan - Internet multi-player card game
ST/Netcheck - Domain name status and ping utility
ST/E-Alarm - Monitors e-mail and alerts when arrived
ST/FTP - General purpose file transfer utility for the Internet. Intranet or TCP/IP network
ST/Mail - Manages a mailbox of incoming and outgoing electronic mail
ST/Telnet - Telnet application
ST/Newsreader - Internet newsgroup reader
ST/Web - SocketTools very own web browser
rexec - Remote execution of commands by the host system
rlogin - Initiates remote login session on a host system
ST/Dial - A simple dialer demonstrating the use of the RAS control
SW/Echo - Echo client and server sample using SocketWrench control
SW/Finger - Popular "finger" utility
SW/FTP - File transfer utility demonstrating SocketWrench


Release Notes
Catalyst SocketTools 1.0c Installation and Release Notes
Copyright 1995-1996 Catalyst Development Corp. All rights reserved.

 Introduction to SocketTools

 Installation Notes

 Release Notes

 Introduction

 SocketWrench 2.0

 New Properties, Events and Methods

 Redistribution Notes

 Technical Support


Release Notes Introduction
SocketTools Release Notes

The SocketTools 1.0c release incorporates a number of corrections and enhancements to the controls, sample projects and on-line documentation.

Because of the nature of some of the fixes and enhancements to the toolkit, you should rebuild any projects created using versions prior to the 1.0b release. Simply replacing the controls with the new release may result in existing applications failing with unexpected errors. Those applications created using the 1.0b release of the controls may be updated in place without requiring that the application be rebuilt.

If you have any questions regarding the changes made to this version of SocketTools, please contact Catalyst Technical Support for more information.


SocketWrench 2.0 Release Notes

The current version of SocketWrench distributed with SocketTools is 2.0c. If you have developed applications using the free SocketWrench 1.x control, there are a number of significant changes that have been made with this release. These changes were made to make SocketWrench easier to use and compatible with the other controls in the toolkit.

Control Filename Changed

The previous versions of the SocketWrench control were named CSWSOCK.VBX. The SocketWrench 2.0 control name has changed to to the following:

CSWSKCTL.VBX	16-bit VBX for Visual Basic 3.0
CSWSK16.OCX	16-bit OCX for Visual Basic 4.0
CSWSK32.OCX	32-bit OCX for Visual Basic 4.0 or other supported containers
CSWSOCK.BAS Module Replaced

Previous versions of SocketWrench included a module named CSWSOCK.BAS which defined various constants that could be used with the control. These constants are included in the CSTOOLS.BAS module distributed with SocketTools.

Dynamically Loaded WINSOCK Library

Previous version of SocketWrench would automatically load the Windows Sockets library (WINSOCK.DLL) as soon as the control was placed on a form. If the library was missing or required a dial-up network connection, there application would terminate or generate unexpected errors.

All of the controls in the toolkit dynamically load the Windows Sockets library, and only when the control requires the library to be loaded. The following conditions cause the control to attempt to load the library:

•  A host name or address is specified
•  A local or remote port number or service name is specified
•  A connection is attempted with a remote host

In addition, the SocketWrench control includes two new actions that allow you to explicitly load and unload the library on demand.

Type Property Changed to SocketType

Earlier version of SocketWrench used a property named "Type" to specify the type of socket to be created. Since this is a reserved word in some environments, this property has been renamed to "SocketType". You should replace all instances with the new property name in your application.

Close Event Changed to Disconnect

For consistency to all other SocketTools controls, the Close event has been changed to be called Disconnect. The event is generated when a connection is lost between the application and its host.

Error Event Changed to LastError

OLE controls have a standard error event which conflicted with the event used by the previous versions of the control. It has been renamed to LastError, and accepts the same parameters. You should replace all instances with the new event name in your application.

Text Mode does not strip Carriage Returns or Linefeeds

In previous versions of the control, setting the Binary property to False caused carriage returns and linefeeds to be stripped from the data being returned by a remote host. This made it difficult to determine the end-of-line on a partial read. The control now preserves these characters.

LastError Property Returns Visual Basic Error Values

The LastError property would return a Windows Sockets error code, which did not match the errors returned by Visual Basic or those included in the CSWSOCK.BAS module. This has been changed so that LastError property returns the same error values generated by the control.


New Properties, Events and Methods
Catalyst SocketTools 1.0c Installation and Release Notes
Copyright 1995-1996 Catalyst Development Corp. All rights reserved.

 Introduction to SocketTools

 Installation Notes

 Release Notes

 Introduction

 SocketWrench 2.0

 New Properties, Events and Methods

 Properties

 Events

 Methods

 Redistribution Notes

 Technical Support


New Control Properties

All Controls

•  AutoResolve Property

•  Library Property

•  Timeout Property

•  SocketError Property

  File Transfer Protocol (FTP) Control

•  FileMask Property

•  FileType Property

•  TransferBytes Property

•  TransferTime Property

  Remote Access Services Control

•  Action Property

•  AutoUpdate Property

•  DialogState Property

•  Interval Property

•  Timeout Property

  Web Browser Control

•  Action Property

•  FontScale Property

•  Image Property

•  ImageCount Property

•  ImageFile Property

•  ImageIndex Property

•  ImageTitle Property

  Windows Sockets Control

•  MaxDatagram Property

•  MaxSockets Property


New Control Events

 File Transfer Protocol (FTP) Control

•  Progress Event

 Remote Access Services Control

•  Timeout Event

 Web Browser Control

•  Change Event


New Control Methods

 Remote Access Services Control

•  CreateEntry Method

•  DeleteEntry Method

•  EditEntry Method

•  RenameEntry Method

•  Reset Method

•  UpdateEntry Method


Redistribution Notes
Catalyst SocketTools 1.0c Installation and Release Notes
Copyright 1995-1996 Catalyst Development Corp. All rights reserved.

 Introduction to SocketTools

 Installation Notes

 Release Notes

 Redistribution Notes

 Introduction

 16-Bit Applications

 32-Bit Applications

 Technical Support


Redistribtion Introduction
Redistributing SocketTools

The License File

When you installed a copy of SocketTools on your system, a file was created which identified you as a licensed developer. If this file is not present, then the controls will only function at runtime (in other words, without a valid license, the controls can be used with an existing application, but cannot be used to create a new application). The SocketTools license agreement requires that there be one license per developer, and the license file may not redistributed with the end-user application. If you have any questions regarding licensing, please contact Catalyst Technical Support.

Setup Utility

Once you have created your application using one or more of the SocketTools controls, you will need to redistribute those controls along with your application. In turn, each of those controls may depend on other libraries which also must be included with your application. Typically, the responsibility of installing the controls is with a setup program (such as the Setup Wizard included with Visual Basic).

Version Resource Information

Each of the custom controls and support DLLs included with SocketTools has information embedded in them which provides information to a setup utility. This information, called the version resource, specifies the control's version number, among other things. If you are using a third-party or in-house setup program, it is extremely important that the program knows how to use this information. For example, if you are deploying an application which uses the FTP control, the setup program must determine if that control has already been installed on the target system. If it has, it must compare the version resource information in the two controls. It should only install the control if the version that you have included with your application is later than the one installed on the system. A setup program which blindly overwrites the control may cause other programs to mysteriously stop working on the end-user's system, which is obviously not desirable.

The Difference Between VBXs and OCXs

There are some significant differences between Visual Basic controls (VBXs) and ActiveX controls (OCXs) which must be accounted for in your setup program. Deploying a Visual Basic control is fairly simple: the setup program only needs to copy the VBX and any required DLLs into the system directory.

ActiveX controls are more complicated and require specific functionality on the part of the setup program. Beyond simply copying them to the system directory, each control must be registered. This means that an entry must be created in the system registry which provides information about the control, such as the location of the OCX file. Fortunately, ActiveX controls are self-registering, which means that the control has the ability to create or update those registry entries itself. To take advantage of this, the setup program must be capable of loading the control and calling those functions inside the control which updates the registry. Most modern setup utilities are capable of registering ActiveX controls. For in-house setup programs, refer to the technical article on OLE Control Registration on the Microsoft Developers Network CD.

Manual Registration

It is possible to register ActiveX controls manually, without the use of a setup program. This may be desirable in those situations where an application is being deployed internally or the developer does not want to create a setup program for a limited distribution. The utilities used to manually register the controls are named regsvr (for 16-bit controls) and regsvr32 (for 32-bit controls) and can be obtained from a number of places, including the Visual Basic or Visual C++ CD-ROM. These utilities accept a command line argument which specifies the name of the control to register. For example, to register the 32-bit FTP control, the command would be entered as:

C:>regsvr32 c:\windows\system\csftp32.ocx

A message box would be displayed indicating that the control was registered successfully. If an error is reported, typically the reason is that a required support DLL is missing. Refer the documentation on the required libraries for the specific control type. Note that the above command should reference the system32 directory, instead of system, if being used under Windows NT.

Installation Directory

The Visual Basic and ActiveX controls should be installed in the System directory on the local machine. Under Windows NT, the System32 directory should be used to store the 32-bit controls and support libraries. Some developers prefer to install the controls used by their application in a subdirectory under the application's installation directory. While this approach can be used with the Visual Basic controls, this approach should not be used with ActiveX controls. This is because the full pathname of the OCX file is stored in the system registry when the control is registered. If multiple applications install the same control in different directories, the actual control that will be used is the one that was last registered. This means that it is possible that an application will load an earlier version of the control than it was built with, which may result in unexpected or fatal errors.


Redistributing 16-Bit Applications

Applications using the 16-bit Visual Basic or ActiveX controls should install those controls in the local system directory. The following files included with SocketTools are redistributable:

VBX Control	ActiveX Control	Description
CSDNSCTL.VBX	CSDNS16.OCX	Domain name service control
CSFTPCTL.VBX	CSFTP16.OCX	File transfer protocol control
CSIMGCTL.VBX	CSIMG16.OCX	Image viewer control
CSPING.VBX	CSPING16.OCX	Internet control message protocol (ping) control
CSNWSCTL.VBX	CSNWS16.OCX	Network news transfer protocol control
CSPOPCTL.VBX	CSPOP16.OCX	Post office protocol control
CSRASCTL.VBX	CSRAS16.OCX	Remote access services control
CSREXCTL.VBX	CSREX16.OCX	Remote command execution control
CSMTPCTL.VBX	CSMTP16.OCX	Simple mail transfer protocol control
CSTNTCTL.VBX	CSTNT16.OCX	Telnet protocol control
CSNVTCTL.VBX	CSNVT16.OCX	Terminal emulation control
CSWEBCTL.VBX	CSWEB16.OCX	Web browser control
CSWSKCTL.VBX	CSWSK16.OCX	Windows Sockets control (SocketWrench)

In addition, the following support libraries are used when distributing the controls:

Library	Description
CSIMGL16.DLL	Image viewer library, used by the image viewer and web browser controls
CSICMP32.DLL	ICMP library used by 16-bit controls under Windows 95 and Windows NT
UUCODE16.DLL	File encoding library, used by the mail sample program
MFC250.DLL	Microsoft Foundation Classes library, used by the ActiveX controls
OC25.DLL	Microsoft OLE Control library, used by the ActiveX controls


Redistributing 32-Bit Applications

Applications using the 32-bit ActiveX controls should install those controls in the local system directory. The following files included with SocketTools are redistributable:

ActiveX Control	Description
CSDNS32.OCX	Domain name service control
CSFTP32.OCX	File transfer protocol control
CSIMG32.OCX	Image viewer control
CSPING32.OCX	Internet control message protocol (ping) control
CSNWS32.OCX	Network news transfer protocol control
CSPOP32.OCX	Post office protocol control
CSRAS32.OCX	Remote access services control
CSREX32.OCX	Remote command execution control
CSMTP32.OCX	Simple mail transfer protocol control
CSTNT32.OCX	Telnet protocol control
CSNVT32.OCX	Terminal emulation control
CSWEB32.OCX	Web browser control
CSWSK32.OCX	Windows Sockets control (SocketWrench)

In addition, the following support libraries are used when distributing the controls:

Library	Description
CSIMGL32.DLL	Image viewer library, used by the image viewer and web browser controls
UUCODE32.DLL	File encoding library, used by the mail sample program
MSVCRT40.DLL	Microsoft C Runtime Library
MFC40.DLL	Microsoft Foundation Classes library
OLEPRO32.DLL	Microsoft OLE library


Technical Support
Catalyst SocketTools 1.0c Installation and Release Notes
Copyright 1995-1996 Catalyst Development Corp. All rights reserved.

 Introduction to SocketTools

 Installation Notes

 Release Notes

 Redistribution Notes

 Technical Support

 Support Policy

 Contact Information

 Troubleshooting Guide


Support Policy
Catalyst Technical Support Policy

Free Technical Support

Catalyst is committed to providing high-quality technical support to developers using the SocketTools control suite. Unlimited technical support is available to registered developers either by e-mail, telephone or fax. Our technical support hours are 8:30 AM to 6:00 PM Pacific time, Monday through Friday, excluding holidays.

Technical Support Contact Information

Phone:	+1 818.997.0110
Fax:	+1 818.997.0550
CompuServe:	72202,1427
Internet:	support@catalyst.com
Web:	http://www.catalyst.com

Free Software Updates

Updates to minor revisions of the package are made freely available to all registered SocketTools developers. A minor revision is where the version number to the left of the decimal point remains unchanged. For example, a change in version from 1.0 to 1.1 is considered a minor revision. However, a change from version 1.3 to 2.0 is considered a major revision, and is only available free of charge if the developer purchased the SocketTools package in the previous 90 days.

You can request a free update by contacting Catalyst Technical Support. The update can be shipped to you electronically, or you can download the update from the Catalyst Web site. For those developers who do not have access to the Internet, update disks can be shipped to you (however, shipping and handling costs will be applied).

When You Contact Us

When you call, you should be at your computer and have the appropriate product documentation at hand. Please be prepared to give the following information:

•  Product serial number
•  The type of hardware that you are using and version of operating system
•  The vendor and version of the TCP/IP software installed on the system
•  Product component type and development environment
•  The exact wording of any messages that were displayed on the screen
•  A description of the sequence of events that leads to the problem
•  A description of how you attempted to resolve the problem

If you are contacting us through an electronic service (the Internet, CompuSeve) or by FAX, please include the above information in your message. This allows us to provide the most efficient, timely service possible.


Contact Information
Catalyst Contact Information

To reach the Catalyst Business and Sales office, contact us at:

Catalyst Development Corporation
56925 Yucca Trail, Suite 254
Yucca Valley, California 92284

Phone:	+1 800.776.3818	U.S. and Canada
	+1 619.228.9653	International
Fax:	+1 619.369.1185
Internet:	sales@catalyst.com	Sales and licensing information
	info@catalyst.com	Product information
Web:	http://www.catalyst.com
To reach the technical support offices, contact us at:

Catalyst Development Corporation
638 Lindero Canyon Road, Suite 107
Oak Park, California  91301

Phone:	+1 818.997.0110
Fax:	+1 818.997.0550
CompuServe:	72202,1427
Internet:	support@catalyst.com


Troubleshooting Guide
SocketTools Troubleshooting Guide

A general protection fault (GPF) occurs when the HostName or HostAddress properties are set, or when attempting to establish a connection.

This is typically the result of the incorrect Windows Sockets being loaded by the control. Make sure that there is only one WINSOCK.DLL (for 16-bit applications) or WSOCK32.DLL  (for 32-bit applications) installed on your system. Each of the networking controls has a property named Library which can be used to explicitly specify which library should be loaded. If this property is not set, or specifies a file name without a path, then the normal rules used by Windows to load the library will be used. This means that the current directory is checked first, then the \WINDOWS directory, followed by the system directory, and then each directory specified in the PATH environment variable.

During execution of a program, error 68 (device unavailable) is being generated.

This error indicates that the control could not load or initialize the Windows Sockets library. This could indicate that there is no library installed on the system, or that the directory that it was installed in was not included in the PATH environment variable. It may also reflect a configuration problem with the TCP/IP stack itself. For example, if the network card drivers failed to load because of a problem with the adapter.

The application does not automatically initiate a dial-up connection when it is executed.

The ability to automatically start a modem dialer program is specific to the TCP/IP stack installed on the system. Some stacks, such as Spry's Internet-In-A-Box, will do this when an application attempts to resolve a hostname or establish a connection. Other products require that you establish the connection with your Internet service provider (ISP) before you attempt a connection.

Under Windows 95, the 32-bit controls automatically initiate a dial-up connection, but the 16-bit controls don't.

The Internet icon in the Control Panel allows you to determine if the dialer is automatically started when a connection is attempted. However, this feature is available only to 32-bit applications. For 16-bit applications, you will need to use the Remote Access Services (RAS) control included with SocketTools.

Using the 16-bit VBX controls with Visual C++ 1.5  or Delphi 1.0 causes a general protection fault or they do not work correctly.

The SocketTools VBX controls were developed using the Visual Basic 2.0 control specification. Unfortunately, Visual C++ 1.5 and Delphi 1.0 only supports controls written to the 1.0 specification, making them incompatible with those development environments.

Using the 16-bit VBX controls with Sheridan's VB Assist loaded causes a general protection fault when using the right mouse button to look at the control's properties.

The SocketTools controls implement some custom properties which have the same names as standard control properties. While this does not cause a problem for Visual Basic, it seems to confuse VB Assist. Sheridan is aware of the problem, so it may have been corrected in the latest latest version of their software.

The LocalName and LocalAddress properties only return empty strings

The controls attempt to determine your local host name and address by first calling a function to determine your local system name, and then uses that name to determine the local IP address. Some Windows Sockets libraries, notably the one included in Novell's Lan Workplace product, will not return the required information unless the system has an entry for itself in the local hosts file. This problem may also occur if you have a dialup network connection, using DNS for name resolution, and your host does not have a reverse (PTR) entry in the DNS database.

The RecvNext property occasionally returns a very large or negative number.

This is a problem that has been found on some Windows Sockets implementations where a call to the ioctlsocket() function returns a wildly incorrect value. This problem typically manifests itself on non-blocking, unbuffered TCP sockets.

After closing a connection to a server and attempting to establish another one, an error is returned which claims that the address is already in use.

This error would be generated by the SocketWrench control. You're not setting the LocalPort property to IPPORT_ANY before  you establish the connection. By default, the LocalPort property has a value of zero (which is the same as IPPORT_ANY). What this tells the socket library is that you don't care what your local port number is, and for the library to assign you an unused port number greater than 1024.

After you connect to the server, the LocalPort property is modified to reflect the actual port number that was assigned to your socket. If, the next time you attempt to connect using that socket, the LocalPort property does not have a value of zero, it will attempt to use that specific port number, which may result in the error being generated. To correct the problem, simply insure that the LocalPort property has a value of zero before you attempt the connection.

The SocketWrench control will not broadcast UDP datagrams over the network.

Refer to the UDPECHO sample program for a generic example of using UDP with SocketWrench. In order to broadcast datagrams (that is, each machine on the local network will receive the datagram sent from your local host), you need to set the Broadcast property to True, and set the HostAddress property to the broadcast IP address for your network.

Applications using the 16-bit controls under Windows NT slow down considerably when connecting to a server on that same system.

There is a significant performance penalty when 16-bit and 32-bit TCP/IP applications connect to each other on the same local system. No doubt this is due to the WOW (Windows on Windows) facility used by Windows NT to execute 16-bit applications.

The error "Can't load (or register) custom control" is reported when attempting to use one of the controls.

This typically indicates a problem with a missing or outdated support DLL used by the control. With the 32-bit version of the controls, the following files are required:

    File	Version
    MFC40.DLL	4.1.6038
    MSVCRT40.DLL	4.1.6038
    OLEPRO32.DLL	4.0.5277

If  these files are present, you may have an older version of one of the libraries which will prevent the control from loading. You should install the same version that is distributed with the SocketTools controls. Note that the MFC40.DLL is self-registering, which means that you should use the regsvr32 utility to register the library. For example, under Windows 95, you would enter:

    C:>regsvr32 c:\windows\system\mfc40.dll

For the 16-bit controls, the following libraries are required:

    File	Version
    OC25.DLL	2.53
    MFC250.DLL	2.5.200b

The OC25.DLL is also self-registering, which means that you should use the 16-bit registration utility regsvr to register the library. For example, you would enter:

    C:>regsvr c:\windows\system\oc25.dll

The regsvr and regsvr32 utilities can also be used to individually register OLE controls. Simply specify the control name as a command argument. A message box will be displayed, indicating if it was able to register the control or not. Keep in mind that the 16-bit registration utility can only be used to register 16-bit controls, while the 32-bit version can only be used to register 32-bit controls.

The image viewer control will not load, and an error is returned when attempting to register the OLE control.

This image viewer control requires that the CSIMGL16.DLL be installed in the system directory for the 16-bit controls. Likewise, the 32-bit OLE control requires that the CSIMGL32.DLL be installed in the system directory. Because these controls are implicitly linked to the image library, if the library is missing, they will fail to load or register.

None of the Catalyst controls are listed when selecting Custom Controls from the Tools menu in Visual Basic 4.0

On the Custom Controls dialog box, there is a group of checkboxes. Make sure that the Controls box is checked, and the Selected Items Only box is unchecked. If the controls are still not displayed, this indicates that the controls were not registered on the system. Note that you cannot copy OLE controls from one system to another and use them like VBXs. You must register them using the regsvr or regsvr32 utilities distributed with SocketTools.

The error "unable to load control" is displayed when attempting to load a project into Visual Basic 4.0

This error can be generated when attempting to load a project that uses a 16-bit control under the 32-bit version of Visual Basic. If the project uses a VBX, it must be changed to use the OCX equivalent, and the 32-bit version of that control must be installed and registered on the system.

Setting the HostAddress or HostName property results in a delay, sometimes up to thirty seconds, before the next line of code in the program is executed.

The HostAddress and HostName properties are reciprocal, which means that when you set one, the other is automatically updated to reflect the change. When the HostAddress property is set, the control will attempt to determine the hostname associated with that address, and when the HostName property is set, it will attempt to determine it's IP address. For those systems that use DNS, this can result in a delay of several seconds. If the system is connected to the Internet, then this delay can be noticeably longer, especially if multiple servers must be queried. To prevent the controls from automatically resolving hostnames and IP addresses, set the AutoResolve property to False. This will force the control to only resolve hostnames at the time a connection is attempted, rather than each time the property is set.

The error "License information for this component not found. You do not have an appropriate license to use this functionality in the design environment" is reported when loading a form into Visual Basic.

This indicates that the license file that is created during the installation of SocketTools is not present on the current system. Note that the license agreement restricts the installation of the package for development purposes to a single system. Although you may redistribute the controls with your package, they may not be used in design mode to create new applications or modify an existing one.

The error "unable to initialize library" or "socket option not supported" is returned when using the Ping control.

The Ping control requires that the Windows Sockets interface supports what is known as “raw”sockets. Not all stacks do, as it is not a requirement to be compliant to the Windows Sockets 1.1 specification. Most notably, Microsoft does not support the creation of raw sockets. However, Microsoft does provide a 32-bit library named ICMP.DLL which the control will use if it is installed. Note that this is a 32-bit only solution –16-bit versions of the control cannot use this library.

The terminal emulation control doesn't recognize any escape sequences that are being sent to it by the Telnet control.

For the emulation control to recognize cursor and screen control sequences, the Emulation property must be set to a value of one (1), and the Telnet control's Binary property must be set to True.

The terminal emulation control does not seem to support some cursor control sequences.

The emulation control only supports a subset of the ANSI escape sequences. Most notably, it does not support those sequences which control color or scrolling regions on the display. A more complete VT220 emulation will be made available in a subsequent release of the control.

When using the Telnet control, the server sends back a string indicating that "ansi" is not a supported terminal type.

The Terminal property for the Telnet control determines the type of terminal that is reported to the remote server. If the system does not have a definition for that terminal type, it may report an error. You may wish to change the property value to another terminal type which is defined, such as “vt100”.

The error "out of memory" is returned whenever a large amount of data is written through the control using the SendData property or Write method.

This error indicates that the amount of data cannot be written to the socket, and there is not enough buffer space allocated internally by the control to store it. Generally speaking, it is better to write large amounts of data out in small 1K to 2K pieces, rather than attempting to send it all at once. Even though you may be able to send large amounts of data using a particular stack, it could cause problems with other stacks or slower serial (dial-up) connections.

Using the VBX controls to read or write binary data works, but the same program using the OLE controls causes the data to be corrupted.

The RecvData and SendData properties are used to read and write data using the VBX controls. These same properties are available with the OLE controls as well, but they cannot be used to read or write data which contains embedded nulls (characters with an ASCII value of zero). With OLE controls, the preferred method of reading or writing data is to use the Read or Write methods, which allow the use of strings which contain embedded nulls.

Sending a null byte using the SendData property works with the SocketWrench VBX, but the same program using the OLE control won't work.

You cannot send a null byte (a character with an ASCII value of zero) using the SendData property with an OLE control. Instead, you must use the Write method, which allows for the use of strings which contain embedded null bytes.

An error occurs when attempting to use a non-string data type with the RecvData or SendData properties.

Only strings may be used to read and write data through the controls. A user-defined data structure, or non-string data type must be copied into a pre-allocated string that is large enough to contain the data. Under Visual Basic 3.0, the hmemcpy kernel function may be used, while under Visual Basic 4.0, the function RtlMoveMemory may be used. In Visual Basic 4.0, the declaration may look like this:

#If Win32 Then
Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" ( _
         hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
#Else
Declare Sub CopyMemory Lib "KERNEL" Alias "hmemcpy" ( _
         hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
#End If

Your application can then use the function CopyMemory to copy the data from your user-defined data type or numeric variable into a string. You may wish to refer to Microsoft's KnowledgeBase documents Q87970, Q88551 and Q97413 for additional information.

Unexpected errors are being returned when the application is being used with Novell's LAN Workplace TCP/IP stack. The same application works correctly in other environments.

Make sure that you are using the latest version of Novell's TCP/IP software. This can be downloaded from their FTP site at ftp.novell.com in the /pub/updates/unixconn/lwdos42 directory as TCP16.EXE.

The Web client control generates an error whenever attempting to load an HTML document.

Check the value of the RemoteAccess property. This property determines how the control handles requests for resources that use HTTP. If it is set to True, the control will attempt to establish a connection with a remote server and retrieve the document or image. However, if the property value is False, the control will only attempt to load a resource from the local system, which may result in an error if the specified file does not exist. Another possibility is that the CacheDir property value specifies a directory that does not exist, or that the current user does not have permission to access.

The Web client control reports error 76 ("path not found") when loading the control in design mode.

This error is generated when the value of the CacheDir property specifies a directory that does not exist, and the TEMP environment variable is not set to a valid path.

The Web client control is creating files in the root directory of my C: drive which begin with the letters <S”and are followed by a series of letters and numbers.

This indicates that no cache directory was specified for the control, or that the property value is set to an invalid path and there is no TEMP environment variable defined. The control uses the following rules to determine which directory should be used for caching files:
1. If the CacheDir property specifies a valid directory name, it is used
2. If the CacheDir property is not set (i.e.: an empty string), or it specifies an invalid path, then the TEMP environment variable is used to determine the directory where files are cached.
3. If the TEMP environment variable is not defined, then the root directory of the C: drive is used to cache files
The application is responsible for determining where cached files are to be kept, and should be application specific. Remember that changing the CacheDir property causes the current cache to be flushed, with all cached files being deleted from the system.